A Voltage Level Bus Protocol For Transferring Data

ABSTRACT

A bus protocol that allows a master to transfer the same data to multiple devices at the same time. More specifically, the bus protocol uses a particular voltage level to identify whether a device should receive the data. A controller is used for programming the voltage levels for the various devices.

BACKGROUND OF INVENTION

[0001] 1. Technical Field

[0002] The present invention generally relates to buses, and more particularly, to buses that use varying voltage levels to communicate with various devices.

[0003] 2. Related Art

[0004] Today's complex circuits and systems are often required to communicate with multiple devices during any given moment in time. This communication has typically been handled using a group of wires often referred to as a bus. There are various schemes for using a bus for communication of data, but nearly all of them involve assigning a unique address/identification to each device, an arbiter, and a master.

[0005] In general, the arbiter is responsible for receiving all the requests to use the bus, and determining which request to allow to proceed first (master). The addresses are used to determine which of the devices should receive the data currently being transmitted on the bus. The amount of time required to request permission for control over the bus from the arbiter (request cycle) can consume a significant amount of cycle bandwidth, particularly when multiple devices residing on the bus require the same data.

[0006] The significance of the overhead for such a request cycle is most notable in clusters of processors having their own submemory. Each of these clusters will often have common copies of code. Over time, the operating system will need to initialize/update these common sections of code, and the overhead of stepping through the clusters for this update can be a bottleneck for overall system performance.

[0007] It would, therefore, be a distinct advantage to have a bus protocol capable of transmitting the same data to multiple devices without the overhead of the request cycle scheme described above. The present invention provides such a bus protocol.

SUMMARY OF INVENTION

[0008] The present invention is a bus protocol that allows a master to transfer the same data to multiple devices at the same time. More specifically, the bus protocol uses a particular voltage level to identify whether a device should receive the data. A controller is used for programming the voltage levels for the various devices.

BRIEF DESCRIPTION OF DRAWINGS

[0009] The present invention will be better understood and its numerous objects and advantages will become more apparent to those skilled in the art by reference to the following drawings, in conjunction with the accompanying specification, in which:

DETAILED DESCRIPTION

[0010] In the following description, well-known circuits have been shown in block diagram form in order not to obscure the present invention in unnecessary detail. For the most part, details concerning timing considerations and the like have been omitted inasmuch as such details are not necessary to obtain a complete understanding of the present invention, and are within the skills of persons of ordinary skill in the relevant art.

[0011] The present invention uses varying voltage levels in lieu of an address to identify one or more devices for receiving data transmitted on a bus. The devices are dynamically programmed using a controller as described in connection with FIG. 1.

[0012] Reference now being made to FIG. 1, a schematic diagram is shown illustrating a computer system 100 having a shared data bus, 114, a plurality of masters 102 a-n, a plurality of slaves/devices 108 a-n, an arbiter 104, and a controller 106. The masters 102 a-n are devices that are transmitting data on the bus to a particular slave or slaves 108 a-n. The arbiter 104 serves the traditional role of an arbiter in that the masters 102 a-n send their requests to the arbiter 104, and it prioritizes these requests and submit them for execution.

[0013] Each one of the slaves 108 a-n receives configuration 110 and threshold 112. The controller 106 uses the configuration 110 signal to select one or more of the slaves 108 a-n for programming, and the threshold 112 signal to indicate the particular voltage level for which the selected slave(s) 108 a-n should respond. The programming of the slaves 108 a-n can be either dynamic or static. Mainly, the slaves 108 a-n can either be initialized once for all transactions, or programmed for each master on an as needed basis. After the controller 106 has programmed the slaves 108 a-n, the arbiter 104 notifies a particular master 102 a-n to that it controls the shared data bus 114. The notification from the arbiter 104 can be accomplished in various ways. For example, a grant signal can be provided from the arbiter 104, or an implicit method of snooping adopted where the master 102 a-n snoops the controller 106 as it programs the slaves 108 a-n. The preferred embodiment used by the masters 102 a-n for transmitting data is explained in connection with FIG. 2.

[0014] Reference now being made to FIG. 2, a flow chart is shown illustrating the steps used by the masters 102 a-n of FIG. 1 for transmitting data on the shared data bus 114 according to the teachings of the present invention. As previously explained, each of the slaves 108 a-n can either be programmed at initialization or during each required transaction by a particular master 102 a-n (step 202). Once the slaves 108 a-n have been programmed to receive data at a particular voltage level, the selected master 102 a-n transmits the data at a predetermined voltage level on the shared data bus 114 (steps 206-208).

[0015] In an alternative embodiment, the masters 102 a-n could each share a common voltage level signal line that would coupled to each one of the slaves 108 a-n, in lieu of transmitting the voltage level with the data. In this alternative embodiment, the masters 102 a-n would transmit the voltage level signal to each one of the slaves prior to transmitting any data on the shared data bus 114. The response of the slaves 108 a-n is explained in connection with FIG. 3.

[0016] Reference now being made to FIG. 3, a flow chart is shown illustrating the method used by the slaves 108 a-n for receiving data on the shared data bus 114 of FIG. 1 according to the teachings of the present invention. Upon detecting a voltage level on the bus voltage signal 116, each of the slaves 108 a-n compares the received voltage to their programmed voltage level (steps 302-304). If the received voltage level is within their programmed voltage level, then the slave 108 a-n accepts the data from the shared data bus 114 (step 306). If the received voltage level is not within their programmed voltage level, then the slave 108 a-n does not accept the data.

[0017] In the alternative embodiment where the masters 102 a-n transmit a voltage level signal to each one of the slaves 108 a-n, the slaves which each receive the voltage level signal at 302, and if the voltage level signal is within the voltage range of their programmed voltage level, then the slave 108 a-n accepts the data from the shared data bus 114 (steps 304-306). If, however, the voltage level signal is not within the voltage range of their programmed voltage level, then the slave 108 a-n does not accept the data.

[0018] An example of the interaction between the controller 106, masters 102 a-n, and slaves 108 a-n are provided below in connection with FIG. 4 to further illustrate the advantages of the present invention.

[0019] Reference now being made to FIG. 4, a chart is shown illustrating the interaction between the controller 106, masters 102 a-n, and slaves 108 a-n according to an example of how the present invention can be used. FIG. 4 illustrates the programming of slaves 108 a-n over time for masters 102 a-n over time. In this particular example, the slaves where dynamically programmed by the controller 106 for receipt of data by each master 108 a-n. It should be noted that the slaves 108 a-n could have been initialized in this manner prior to any transfer of data.

[0020] It should be apparent from the chart in FIG. 4 that the present invention allows multiple masters 102 a-n to transfer differing data to one or more slaves 108 a-n simultaneously. For example, assume that slaves 108 a-c have had their programmed voltage levels set between 1.1-1.3 volts, and all slaves after 108 c thru 108 n have had their programmed voltage levels set between 0.6-0.8 volts. Now assume that masters 102 a and 102 b want to communicate with slaves 108 a-n simultaneously. In this example, master 102 a could transmit data between 1.1-1.3 volts to transfer data to both slaves 108 a-c, and master 102 b could transmit data between 0.6-0.8 volts to transfer data to all slaves after 108 c thru 108 n.

[0021] It is thus believed that the operation and construction of the present invention will be apparent from the foregoing description. While the method and system shown and described has been characterized as being preferred, it will be readily apparent that various changes and/or modifications could be made without departing from the spirit and scope of the present invention as defined in the following claims. 

1. A communication system comprising: a bus to transmit and receive data; a master to transmit data on the bus at a referenced voltage; and a first slave to accept the data when the referenced voltage is within the voltage range of an internal threshold voltage.
 2. The communication system of claim 1 further comprising: a controller to program the internal threshold voltage of the first slave. The communication system of claim 2 wherein prior to transmitting the data, the controller informs the master of the reference voltage level it will use.
 3. The communication system of claim 3 wherein the controller programs the internal threshold voltage of the first slave to match that of the reference voltage level.
 4. The communication system of claim 1 further comprising: a second slave to accept the data when the referenced voltage is within the range of an internal threshold voltage.
 5. The communication system of claim 5 wherein prior to transmitting the data, the controller informs the master of the reference voltage level it will use.
 6. The communication system of claim 6 wherein the controller programs the internal threshold voltages of the first and second slaves to match the voltage range of the reference voltage.
 7. A computer comprising: a bus to transfer data; a first master to transmit first data on the bus at a first referenced voltage level; a first slave to accept data transmitted on the bus when the voltage level of the received data is within an internal threshold voltage level; and a second slave to accept data transmitted on the bus when the voltage level of the received data is within an internal threshold voltage level.
 8. The computer of claim 8 wherein the first referenced voltage level is within the first and second internal voltage levels thereby allowing the first and second slaves to receive the transmitted data simultaneously.
 9. The computer of claim 8 wherein the first reference voltage level is within the first internal voltage level but not the second internal voltage level, thus allowing only the first slave to receive the transmitted data.
 10. The computer of claim 8 further comprising: a second master to transmit second data on the bus at a second referenced voltage level; a third slave to accept data transmitted on the bus when the voltage level of the received data is within the range of an internal threshold voltage level.
 11. The computer of claim 11 wherein the first referenced voltage level is within the first and second internal voltage levels, thus allowing the first and second slaves to receive the first data simultaneously.
 12. The computer of claim 12 wherein the second referenced voltage level is within the range of the third internal voltage level, thus allowing the third slave to receive the second data.
 13. The computer of claim 8 further comprising: a controller for programming the internal voltage levels of the first, second, and third slaves.
 14. The computer of claim 14 wherein the controller programs the first, second, and third slaves prior to any data being transmitted on the bus. 